package com.zhangkunhao.notes.dao;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

/**
 * 增删改和填充占位符的接口
 *
 * @author 张坤浩
 */
public interface Dao {
    /**
     * 增删改
     *
     * @param sql  sql语句
     * @param args 增删改的内容
     * @return 修改的行数
     */
    int update(String sql, Object... args);

    /**
     * 查询所有对象
     *
     * @param sql
     * @param clazz
     * @param args
     * @param <T>
     * @return
     */
    <T> List<T> queryList(String sql, Class<T> clazz, Object... args);

    /**
     * 查询某个对象
     *
     * @param sql
     * @param clazz
     * @param args
     * @param <T>
     * @return
     */
    <T> T query(String sql, Class<T> clazz, Object... args);

    /**
     * 填充sql语句占位符
     *
     * @param pstmt
     * @param args
     * @throws SQLException
     */
    void fillParameter(PreparedStatement pstmt, Object[] args) throws SQLException;
}
